/*
 * @lc app=leetcode.cn id=46 lang=javascript
 *
 * [46] 全排列
 */

// @lc code=start
/**
 * @param {number[]} nums
 * @return {number[][]}
 */
//  给定一个不含重复数字的数组 nums ，返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。
var permute = function(nums) {
    let res=[]
    let help=function(lastRes,nums){
        if(nums.length==1){
           res.push(lastRes.concat(nums))
           return
        }
         lastRes=[...lastRes]
        let tail=lastRes.length
        for(let i=0;i<nums.length;i++){
            let temp=[...nums]
            lastRes[tail]=nums[i]
            temp.splice(i,1)
            help(lastRes,temp)
        }
    }
    help([],nums)
    return res
};//这个题一定要处处注意引用值
// @lc code=end
console.log(permute([1,2,3]))
